package queue;

/**
 * Title: QueueADT
 * Author: Michael Satran Jr
 * Date: 10/25/2011
 */

/**
 * This is an ADT for a Queue.
 * 
 * @author Michael
 * @version 1
 * @param <T> Specified type to be a queue of.
 */
public interface QueueADT<T>
{
  /**
   * This method puts an element at the end of the Queue.
   * 
   * @param e Element that is to be enque'd.
   */
  void enque(T e);
  /**
   * This method removes an element from the front of the Queue.
   * @return Returns the element that was deque'd
   */
  T deque();
  /**
   * @return Returns the element at the front of the Queue.
   */
  T peek();
  /**
   * @return Returns the amount of elements in the Queue.
   */
  int size();
  /**
   * @return Returns true if the Queue is empty and false if it is not Empty.
   */
  boolean isEmpty();
}
